package leetcode; /**
 * description:
 * author:zt
 * date:2021-10-06
 */

import java.util.*;

/**
 * 给你一个非空数组，返回此数组中 第三大的数 。如果不存在，则返回数组中最大的数。
 */
public class leetcode414 {
    long INF = (long)-1e18;
    public int thirdMax(int[] nums) {
        long a = INF, b = INF, c = INF;
        for (int x : nums) {
            if (x > a) {
                c = b; b = a; a = x;
            } else if (x < a && x > b) {
                c = b; b = x;
            } else if (x < b && x > c) {
                c = x;
            }
        }
        return c != INF ? (int)c : (int)a;
    }

//    public int thirdMax(int[] nums) {
//        Set<Integer> set = new HashSet<>();
//        for (int x : nums) set.add(x);
//        List<Integer> list = new ArrayList<>(set);
//        Collections.sort(list);
//        return list.size() < 3 ? list.get(list.size() - 1) : list.get(list.size() - 3);
//    }
}
